/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.camachosanchez.reportes;

import com.camachosanchez.bean.Neumaticos;
import com.camachosanchez.util.ReportUtil;
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import java.awt.Desktop;
import java.io.File;
import java.io.FileOutputStream;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;



/**
 *
 * @author Zully
 */
public class ReporteHistorialNeumatico {
    
    public void generarReporte(DefaultTableModel modeloReencuaches, DefaultTableModel modeloCambios, Neumaticos neumatico) {
        
        Document document = new Document(PageSize.A4, 0, 0, 50, 50);
        try {
            
            PdfWriter.getInstance(document, new FileOutputStream("reportes/historialneumatico_" + neumatico.getCodigo() + ".pdf"));
            document.open();
            document.addTitle("Historial de Neumático: " + neumatico.getCodigo());
            
            float[] anchoColsCab = {1.1f, 0.6f};//version prueba
            PdfPTable tablaC=new PdfPTable(anchoColsCab);
            tablaC.setSpacingAfter(20f);
            tablaC.setHorizontalAlignment(Element.ALIGN_CENTER);
            tablaC.setWidthPercentage(90);

            PdfPCell celda =new PdfPCell (new Paragraph("Historial del Neumático " + neumatico.getCodigo(),
            FontFactory.getFont(BaseFont.HELVETICA,18,Font.BOLD,BaseColor.BLACK)));
            celda.setHorizontalAlignment(Element.ALIGN_CENTER);
            celda.setBorderWidth(0);
            tablaC.addCell(celda);

            tablaC.addCell(ReportUtil.getCelda("TireSoft 2.0 (Versión de prueba)",1,1,BaseColor.WHITE,0,0,10,1));//version prueba
            document.add(tablaC);
            
            float[] anchoColsDesc = {0.2f, 0.4f, 0.2f, 0.4f, 0.2f, 0.4f};
            PdfPTable tablaDesc=new PdfPTable(anchoColsDesc);
            tablaDesc.setWidthPercentage(90);
            tablaDesc.addCell(ReportUtil.getCelda("Código:",1,1,new BaseColor(255,255,255),0,0,10,1));
            tablaDesc.addCell(ReportUtil.getCelda(neumatico.getCodigo(),1,1,new BaseColor(255,255,255),0,0,10,0));
            tablaDesc.addCell(ReportUtil.getCelda("Marca:",1,1,new BaseColor(255,255,255),0,0,10,1));
            tablaDesc.addCell(ReportUtil.getCelda(neumatico.getIdMarca().getNombre(),1,1,new BaseColor(255,255,255),0,0,10,0));
            tablaDesc.addCell(ReportUtil.getCelda("Banda:",1,1,new BaseColor(255,255,255),0,0,10,1));
            tablaDesc.addCell(ReportUtil.getCelda(neumatico.getIdModelo().getMedida(),1,1,new BaseColor(255,255,255),0,0,10,0));
            document.add(tablaDesc);
            
            float[] anchoColsM = {0.25f, 0.25f, 0.4f, 0.3f, 0.3f, 0.1f, 0.5f};
            PdfPTable tablaMontajes=new PdfPTable(anchoColsM);
            tablaMontajes.setWidthPercentage(90);
            tablaMontajes.setSpacingBefore(20f);

            tablaMontajes.addCell(ReportUtil.getCelda("Montajes y Desmontajes",7,1,new BaseColor(192,209,255),1,0.5f,9,1));
            tablaMontajes.addCell(ReportUtil.getCelda("Fecha",1,1,new BaseColor(217,227,255),1,0.5f,9,1));
            tablaMontajes.addCell(ReportUtil.getCelda("Vehículo",1,1,new BaseColor(217,227,255),1,0.5f,9,1));
            tablaMontajes.addCell(ReportUtil.getCelda("Taller",1,1,new BaseColor(217,227,255),1,0.5f,9,1));
            tablaMontajes.addCell(ReportUtil.getCelda("Kilometraje",1,1,new BaseColor(217,227,255),1,0.5f,9,1));
            tablaMontajes.addCell(ReportUtil.getCelda("Tipo",1,1,new BaseColor(217,227,255),1,0.5f,9,1));
            tablaMontajes.addCell(ReportUtil.getCelda("Pos",1,1,new BaseColor(217,227,255),1,0.5f,9,1));
            tablaMontajes.addCell(ReportUtil.getCelda("Observación",1,1,new BaseColor(217,227,255),1,0.5f,9,1));
            int cantCambios = modeloCambios.getRowCount();
            String valorC;
            for(int i = 0; i < cantCambios; i++) {
                valorC = (modeloCambios.getValueAt(i, 1)==null)? "" : modeloCambios.getValueAt(i, 1) + "";
                tablaMontajes.addCell(ReportUtil.getCelda(valorC,1,1,BaseColor.WHITE,1,0.5f,9,0));
                valorC = (modeloCambios.getValueAt(i, 2)==null)? "" : modeloCambios.getValueAt(i, 2) + "";
                tablaMontajes.addCell(ReportUtil.getCelda(valorC,1,1,BaseColor.WHITE,0,0.5f,9,0));
                valorC = (modeloCambios.getValueAt(i, 3)==null)? "" : modeloCambios.getValueAt(i, 3) + "";
                tablaMontajes.addCell(ReportUtil.getCelda(valorC,1,1,BaseColor.WHITE,0,0.5f,9,0));
                valorC = (modeloCambios.getValueAt(i, 4)==null)? "" : modeloCambios.getValueAt(i, 4) + "";
                tablaMontajes.addCell(ReportUtil.getCelda(valorC,1,1,BaseColor.WHITE,2,0.5f,9,0));
                valorC = (modeloCambios.getValueAt(i, 5)==null)? "" : modeloCambios.getValueAt(i, 5) + "";
                tablaMontajes.addCell(ReportUtil.getCelda(valorC,1,1,BaseColor.WHITE,0,0.5f,9,0));
                valorC = (modeloCambios.getValueAt(i, 6)==null)? "" : modeloCambios.getValueAt(i, 6) + "";
                tablaMontajes.addCell(ReportUtil.getCelda(valorC,1,1,BaseColor.WHITE,2,0.5f,9,0));
                valorC = (modeloCambios.getValueAt(i, 7)==null)? "" : modeloCambios.getValueAt(i, 7) + "";
                tablaMontajes.addCell(ReportUtil.getCelda(valorC,1,1,BaseColor.WHITE,0,0.5f,9,0));
            }
            document.add(tablaMontajes);
            
            float[] anchoColsR = {0.25f, 0.4f, 0.3f, 0.25f, 0.3f, 0.3f, 0.2f, 0.5f};
            PdfPTable tablaReencauches=new PdfPTable(anchoColsR);
            tablaReencauches.setWidthPercentage(90);
            tablaReencauches.setSpacingBefore(20f);
            
            tablaReencauches.addCell(ReportUtil.getCelda("Envíos a Reencauche",8,1,new BaseColor(192,209,255),1,0.5f,9,1));
            tablaReencauches.addCell(ReportUtil.getCelda("Fecha Envío",1,1,new BaseColor(217,227,255),1,0.5f,9,1));
            tablaReencauches.addCell(ReportUtil.getCelda("Distribuidor",1,1,new BaseColor(217,227,255),1,0.5f,9,1));
            tablaReencauches.addCell(ReportUtil.getCelda("Nº Factura",1,1,new BaseColor(217,227,255),1,0.5f,9,1));
            tablaReencauches.addCell(ReportUtil.getCelda("Fecha Recepción",1,1,new BaseColor(217,227,255),1,0.5f,9,1));
            tablaReencauches.addCell(ReportUtil.getCelda("Nuevo Modelo",1,1,new BaseColor(217,227,255),1,0.5f,9,1));
            tablaReencauches.addCell(ReportUtil.getCelda("Guía Rem.",1,1,new BaseColor(217,227,255),1,0.5f,9,1));
            tablaReencauches.addCell(ReportUtil.getCelda("Precio",1,1,new BaseColor(217,227,255),1,0.5f,9,1));
            tablaReencauches.addCell(ReportUtil.getCelda("Observaciones",1,1,new BaseColor(217,227,255),1,0.5f,9,1));
            int cantReencauches = modeloReencuaches.getRowCount();
            String valorR;
            for(int i = 0; i < cantReencauches; i++) {
                valorR = (modeloReencuaches.getValueAt(i, 1)==null)? "" : modeloReencuaches.getValueAt(i, 1) + "";
                tablaReencauches.addCell(ReportUtil.getCelda(valorR,1,1,BaseColor.WHITE,1,0.5f,9,0));
                valorR = (modeloReencuaches.getValueAt(i, 2)==null)? "" : modeloReencuaches.getValueAt(i, 2) + "";
                tablaReencauches.addCell(ReportUtil.getCelda(valorR,1,1,BaseColor.WHITE,0,0.5f,9,0));
                valorR = (modeloReencuaches.getValueAt(i, 3)==null)? "" : modeloReencuaches.getValueAt(i, 3) + "";
                tablaReencauches.addCell(ReportUtil.getCelda(valorR,1,1,BaseColor.WHITE,0,0.5f,9,0));
                valorR = (modeloReencuaches.getValueAt(i, 4)==null)? "" : modeloReencuaches.getValueAt(i, 4) + "";
                tablaReencauches.addCell(ReportUtil.getCelda(valorR,1,1,BaseColor.WHITE,1,0.5f,9,0));
                valorR = (modeloReencuaches.getValueAt(i, 5)==null)? "" : modeloReencuaches.getValueAt(i, 5) + "";
                tablaReencauches.addCell(ReportUtil.getCelda(valorR,1,1,BaseColor.WHITE,0,0.5f,9,0));
                valorR = (modeloReencuaches.getValueAt(i, 6)==null)? "" : modeloReencuaches.getValueAt(i, 6) + "";
                tablaReencauches.addCell(ReportUtil.getCelda(valorR,1,1,BaseColor.WHITE,0,0.5f,9,0));
                valorR = (modeloReencuaches.getValueAt(i, 7)==null)? "" : modeloReencuaches.getValueAt(i, 7) + "";
                tablaReencauches.addCell(ReportUtil.getCelda(valorR,1,1,BaseColor.WHITE,2,0.5f,9,0));
                valorR = (modeloReencuaches.getValueAt(i, 8)==null)? "" : modeloReencuaches.getValueAt(i, 8) + "";
                tablaReencauches.addCell(ReportUtil.getCelda(valorR,1,1,BaseColor.WHITE,0,0.5f,9,0));
            }
            document.add(tablaReencauches);
            
            document.close();
//            Runtime.getRuntime().exec ("cmd.exe /c start reportes/historialneumatico_" + neumatico.getCodigo() + ".pdf");
            
            File pdfFile = new File("reportes/historialneumatico_" + neumatico.getCodigo() + ".pdf");
            if (Desktop.isDesktopSupported()) {
                Desktop.getDesktop().open(pdfFile);
            } else {
                JOptionPane.showMessageDialog(null, "No se puede abrir el reporte.", "Error al abrir el archivo", JOptionPane.ERROR_MESSAGE);
            }
        } catch (Exception ex) {
            System.err.println(ex.getMessage());
        }
    }
}
